package com.dpkit.core;

import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * DPKit核心服务接口
 */
public interface DPKitCoreEngine {
    
    /**
     * 处理JSON数据并持久化
     * @param templateName 模板名称
     * @param jsonData JSON数据字符串
     * @return 保存的实体数量
     */
    int processAndPersist(String templateName, String jsonData) throws IOException;
    
    /**
     * 批量处理JSON数据并持久化
     * @param templateName 模板名称
     * @param jsonDataList JSON数据列表
     * @return 保存的实体总数
     */
    int batchProcessAndPersist(String templateName, List<String> jsonDataList) throws IOException;
    
    /**
     * 获取指定模板生成的实体类
     * @param templateName 模板名称
     * @return 实体类Class对象
     */
    Class<?> getEntityClass(String templateName) throws IOException;
    
    /**
     * 根据模板和数据创建实体实例（不持久化）
     * @param templateName 模板名称
     * @param jsonData 单条JSON数据
     * @return 实体实例
     */
    Object createEntityInstance(String templateName, String jsonData) throws IOException;
    
    /**
     * 执行原生SQL查询
     * @param sql SQL语句
     * @param params 参数
     * @return 结果列表
     */
    List<Map<String, Object>> nativeQuery(String sql, Map<String, Object> params);
    
    /**
     * 刷新实体类缓存
     */
    void refreshCache();
}